import Cookies from "js-cookie";
// 默认语言应该包含所有的语言情况的配置信息
export const fallbackLocale = "en";

/**
 * 设置语言
 * @param lang 语言ID
 */
export function setLanguage(lang: string) {
  if (lang) {
    // 设定Cookie中的语言值
    Cookies.set("lang", lang);
    // 设定文档语言集
    document.documentElement.setAttribute("lang", lang);
  }
}

/**
 * 获取系统当前语言
 */
export function getLanguage() {
  // 获取Cookie 缓存中是否存在语言包
  // 获取当前语言顺序 ：  用户配置语言  > 浏览器语言  > 浏览器默认语言
  const lang = Cookies.get("lang") || document.documentElement.getAttribute("lang") || navigator.language;
  // 设定当前语言
  setLanguage(lang);

  return lang;
}

/**
 * 获取浏览器配置情况下的所有支持语言集
 */
export function getLanguages() {
  const lang = getLanguage(); // 获取当前语言
  const languages = navigator.languages.filter(item => item !== lang && item !== fallbackLocale);
  // 如果当前语言是最终回退的语言则浏览器所支持的语言不包含其他语言集
  if (lang === fallbackLocale) {
    return [lang];
  } else {
    return [lang].concat(languages).concat([fallbackLocale]);
  }
}
